package com.management.dao;



import com.management.po.UserAndCompany;
import com.management.vo.UserAndCompanyVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zwh
 * 公司人员数据访问接口
 */
public interface UserAndCompanyDao {

    /**
     * 查询所有公司下所有员工
     * @return 公司员工集合对象
     */
    public List<UserAndCompanyVO> findAll();

    /**
     * 根据公司员工编号 查询公司员工对象
     * @param userAndCompanyId 公司员工编号
     * @return 公司员工对象
     */
    public UserAndCompanyVO findByUserAndCompanyId(int userAndCompanyId);

    /**
     * 根据人员编号查询公司员工对象
     * @param userId 员工编号
     * @return 公司员工集合对象
     */
    public List<UserAndCompanyVO> findByUserId(int userId);

    /**
     * 根据公司编号查询公司下所有员工
     * @param companyId 公司编号
     * @return 公司员工集合对象
     */
    public List<UserAndCompanyVO> findByCompanyId(int companyId);

    /**
     * 根据公司部门编号查询公司部门下所有员工
     * @param deptId 部门编号
     * @return 公司员工集合对象
     */
    public List<UserAndCompanyVO> findByDeptId(int deptId);

    /**
     * 根据公司编号，科室编号查询公司科室下所有人员
     * @param companyId 公司编号
     * @param sectionId 科室编号
     * @return 公司员工集合对象
     */
    public List<UserAndCompanyVO> findByCompanyAndSectionId(@Param("companyId") int companyId, @Param("sectionId") int sectionId);

    /**
     * 根据公司编号，职位编号查询公司当前职位全部人员
     * @param companyId  公司编号
     * @param postId 职位编号
     * @return 公司员工集合对象
     */
    public List<UserAndCompanyVO> findByCompanyAndPostId(@Param("companyId") int companyId,@Param("postId") int postId);

    /**
     * 模糊查询
     * @param userAndCompany 公司员工对象
     * @return 公司员工集合对象
     */
    public List<UserAndCompanyVO> find(UserAndCompany userAndCompany);
    /**
     * 新增公司
     * @param userAndCompany 公司员工对象
     * @return 受影响行数
     */
    public int add(UserAndCompany userAndCompany);

    /**
     * 更新公司
     * @param userAndCompany 公司员工对象
     * @return 受影响行数
     */
    public int update(UserAndCompany userAndCompany);
}
